﻿/*********************************************************
 * 开发人员：小兵
 * 创建时间：2012-10-22 14:07:49
 * 描述说明：
 * 
 * 更改历史：
 * 
 * *******************************************************/
namespace Mozlite
{
    using System;
    using System.Web;
    using System.Data;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Web.Routing;
    using System.Text.RegularExpressions;
    using Mozlite.Components;

    /// <summary>
    /// 网站地址管理类。
    /// </summary>
    public static class SiteUrls
    {
        #region helpers
        /// <summary>
        /// 格式化URL地址。
        /// </summary>
        /// <param name="name">路由名称。</param>
        /// <param name="area">区域名称。</param>
        /// <returns>返回URL地址。</returns>
        public static string FormatUrl(string name, string area = null)
        {
            return WebUI.Routes.FormatUrl(name, null, area);
        }
        /// <summary>
        /// 格式化URL地址。
        /// </summary>
        /// <param name="name">路由名称。</param>
        /// <param name="values">参数键值对。</param>
        /// <param name="area">区域名称。</param>
        /// <returns>返回URL地址。</returns>
        public static string FormatUrl(string name, object values, string area = null)
        {
            return WebUI.Routes.FormatUrl(name, values, area);
        }
        /// <summary>
        /// 格式化URL地址。
        /// </summary>
        /// <param name="name">路由名称。</param>
        /// <param name="values">参数键值对。</param>
        /// <param name="area">区域名称。</param>
        /// <returns>返回URL地址。</returns>
        public static string FormatUrl(string name, RouteValueDictionary values = null, string area = null)
        {
            return WebUI.Routes.FormatUrl(name, values, area);
        }
        /// <summary>
        /// 获取首页地址。
        /// </summary>
        /// <param name="area">区域名称。</param>
        /// <returns>返回首页默认地址。</returns>
        public static string GetDefaultUrl(string area = null)
        {
            return WebUI.Routes.GetDefaultUrl(area);
        }
        #endregion

        #region default urls
        /// <summary>
        /// 首页地址。
        /// </summary>
        public static string DefaultUrl {
            get {
                return WebUI.Routes.GetDefaultUrl();
            }
        }
        /// <summary>
        /// 后台首页地址。
        /// </summary>
        public static string BackendUrl
        {
            get
            {
                return WebUI.Routes.GetDefaultUrl(Consts.Backend);
            }
        }
        /// <summary>
        /// 后台首页地址。
        /// </summary>
        public static string UCenterUrl
        {
            get
            {
                return Cores.GetBackend("ucenter");
            }
        }
        /// <summary>
        /// 每个角色登录后对于的后台地址。
        /// </summary>
        /// <param name="role">角色类型。</param>
        /// <returns>返回后台地址。</returns>
        public static string RoleDefaultUrl(this RoleLevel role){
            switch(role) { 
                case RoleLevel.Editor:
                case RoleLevel.Administrator:
                case RoleLevel.Creator:
                    return BackendUrl;
                default:
                    return UCenterUrl;
            }
        }
        #endregion

        #region validcodes
        /// <summary>
        /// 获取验证码URL地址。
        /// </summary>
        /// <param name="key">唯一键。</param>
        /// <param name="width">长。</param>
        /// <param name="height">高。</param>
        /// <returns>返回URL地址。</returns>
        public static string GetValidCodeUrl(string key, int width, int height)
        {
            return FormatUrl("ValidCode", new { key = key, width = width, height = height });
        }
        #endregion
    }
}
